package com.mlethe.library.multi.api.entity;

import android.text.TextUtils;

import com.mlethe.library.multi.api.Share;

import java.util.ArrayList;
import java.util.List;

/**
 * 图片分享实体
 *
 * @author Mlethe
 */
public final class ShareImage extends Share {

    /**
     * 图片
     */
    private List<ImageObject> images;
    /**
     * 启动小程序的原始id，示例：gh_d43f693ca31f（微信）
     * 分享的图片消息是否要带小程序入口，非空则显示，opensdk 6.8.30支持，最低客户端版本要求：8.0.48
     */
    private String miniProgramUsername;
    /**
     * 启动小程序的path（微信）
     * 分享的图片消息显示的小程序入口可以跳转的小程序路径，opensdk 6.8.30支持，最低客户端版本要求：8.0.48
     */
    private String miniProgramPath;

    public ShareImage(ImageObject image) {
        this.images = new ArrayList<>();
        this.images.add(image);
    }

    public ShareImage(List<ImageObject> images) {
        this.images = images;
    }

    /**
     * 添加图片
     *
     * @param image
     */
    public ShareImage addImage(ImageObject image) {
        if (this.images == null) {
            this.images = new ArrayList<>();
        }
        this.images.add(image);
        return this;
    }

    /**
     * 获取图片
     */
    public List<ImageObject> getImages() {
        return images;
    }

    /**
     * 获取启动小程序的原始id（微信）
     */
    public String getMiniProgramUsername() {
        return miniProgramUsername;
    }

    /**
     * 设置启动小程序的原始id，示例：gh_d43f693ca31f（微信）
     * 分享的图片消息是否要带小程序入口，非空则显示，opensdk 6.8.30支持，最低客户端版本要求：8.0.48
     *
     * @param miniProgramUsername 小程序的原始id
     */
    public ShareImage setMiniProgramUsername(String miniProgramUsername) {
        this.miniProgramUsername = miniProgramUsername;
        return this;
    }

    /**
     * 获取启动小程序的path（微信）
     */
    public String getMiniProgramPath() {
        return miniProgramPath;
    }

    /**
     * 设置启动小程序的path（微信）
     * 分享的图片消息是否要带小程序入口，非空则显示，opensdk 6.8.30支持，最低客户端版本要求：8.0.48
     *
     * @param miniProgramPath 小程序的path
     */
    public ShareImage setMiniProgramPath(String miniProgramPath) {
        this.miniProgramPath = miniProgramPath;
        return this;
    }

    @Override
    public boolean isValid() {
        return !TextUtils.isEmpty(getTitle()) && !TextUtils.isEmpty(getTargetUrl());
    }

    @Override
    protected void release() {
        super.release();
        if (images != null) {
            for (ImageObject image : images) {
                image.release();
            }
        }
        images = null;
    }
}
